/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package pio.action.aspirante;

import pio.action.administrador.preinscripcion.*;
import pio.action.administrador.preseleccion.*;
import pio.action.administrador.*;
import DBMS.DataBaseManager;
import clases.*;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileWriter;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;

/**
 *
 * @author charles
 */
public class Constancia extends org.apache.struts.action.Action {

    public ActionForward execute(ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        clases.Constancia reporte = new clases.Constancia();
        DataBaseManager dbms = DataBaseManager.getInstance();
        reporte.setTipo(TipoReporte.ASPIRANTE);
        reporte.setNumAutenticacion();
        while (dbms.existeNumAutenticacion(reporte.getNumAutenticacion())) {
            reporte.setNumAutenticacion();
        }
        dbms.agregarReporte(reporte);
        reporte.setId(dbms.buscarID(reporte.getNumAutenticacion()));
        Preinscrito pre = new Preinscrito();
        pre.setCedula(String.valueOf(request.getSession().getAttribute("cedula")));
        pre = dbms.consultarPreinscritos(pre).get(0);
        reporte.setPreinscrito(pre);
        for (Turno t : dbms.consultarTurno(new Turno())) {
            if (t.getId() == pre.getTurnoPrueba()) {
                reporte.setTurno(t);
                break;
            }
        }
        for (Institucion insti : dbms.consultarInstitucion(new Institucion())) {
            if (pre.getInstitucionId() == insti.getId()) {
                for (Parada pa : dbms.consultarParada(new Parada())) {
                    if (insti.getIdParada() == pa.getId()) {
                        reporte.setParada(pa);
                        break;
                    }
                }
                reporte.setInstitucion(insti);
                break;
            }
        }
        String path = Configuracion.getReportesPath() + reporte.getTipo() + reporte.getId() + ".pdf";
        try {
            reporte.generar(path);
            request.getSession().setAttribute("reporte", path);
            request.setAttribute("reporte", path);
            return mapping.findForward("pdf");
        } catch (Exception e) {
            reporte.setMensaje("Problemas con el servidor.");
            return mapping.findForward("pdf");
        }
    }
}
